CloudWatch エージェントでプロセスの死活監視をする方法
この記事は アノテーション株式会社 AWS Technical Support Advent Calendar 2023 | Advent Calendar 2023 - Qiita 13日目の記事です。
困っていること
CloudWatch エージェントを使用しています。
プロセスの死活監視を行いたいのですが、どの指標を元に判断すれば良いでしょうか?
どう対応すればいいの?
procstat プラグイン1を使用し、pid_count を取得します。
CloudWatch エージェントの設定ファイルの設定例をご紹介します。
{ "metrics": { "metrics_collected": { "procstat": [ { "exe": "<プロセス名>", "measurement": [ "pid_count" ], "metrics_collection_interval": 60 } ] } } }
pid_count が 1 以上の場合、プロセスが稼働していると判断できます。
そのため、pid_count の値が 0 の時にアラームになるよう、CloudWatch アラームをご設定ください。
やってみた
Windows Server 2022 の AMI から EC2 を起動します。Systems Manager の Run Command が実行できるように、前提条件2を満たすように設定します。
Systems Manager の Parameter Store: AmazonCloudWatch-Processtest に下記の内容を保存します。今回は、amazon-ssm-agent のプロセスを確認します。
{ "metrics": { "metrics_collected": { "procstat": [ { "exe": "amazon-ssm-agent", "measurement": [ "pid_count" ], "metrics_collection_interval": 60 } ] } } }
EC2 に対して CloudWatch エージェントのインストールを行う Run Command を実行します。
- ドキュメント名: AWS-ConfigureAWSPackage
- コマンドのパラメータ
- Action: Install
- Name: AmazonCloudWatchAgent
- Version: latest
CloudWatch エージェントを起動し、設定ファイルに Parameter Store に保存した JSON を指定する Run Command を実行します。
- ドキュメント名: AmazonCloudWatch-ManageAgent
- コマンドのパラメータ
- Action: configure
- Mode: ec2
- Optional Configuration Source: ssm
- Optional Configuration Location: AmazonCloudWatch-Processtest
- Optional Restart: yes
CloudWatch のカスタムメトリクスを確認し、pid_count が取得できていることを確認します。
CloudWatch アラームを作成し、値が 1 より小さくなったらアラームになるようにします。
EC2 へログインし、タスクマネージャーから amazon-sms-agent のプロセスを停止します。
amazon-ssm-agent のプロセスを停止したことにより pid_count が 0 になり、アラームが発生しました!